package com.whfc.ms.api.mach.service;

import com.whfc.common.result.PageData;
import com.whfc.entity.dto.OssPathDTO;
import com.whfc.mach.dto.AppMachDataStatDTO;
import com.whfc.mach.dto.MachDayDataDTO;
import com.whfc.mach.dto.MachMonthReportDTO;

import java.util.Date;

/**
 * @author sun_guodong
 * @description 电力设备报表
 * @date 2021-03-10
 */
public interface MsReportService {
    /**
     * 电力设备日报
     *
     * @param deptId
     * @param date
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<MachDayDataDTO> dayReport(Integer deptId, Date date, Integer pageNum, Integer pageSize);

    /**
     * 设备月报
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @param month
     * @return
     */
    PageData<MachMonthReportDTO> monthReport(Integer deptId, Integer pageNum, Integer pageSize, Date month);

    /**
     * 设备多天数据报表
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @param startDate
     * @param endDate
     * @return
     */
    PageData<MachMonthReportDTO> commonReport(Integer deptId, Integer pageNum, Integer pageSize, Date startDate, Date endDate);

    /**
     * 设备年报
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @param year
     * @return
     */
    PageData<MachMonthReportDTO> yearReport(Integer deptId, Integer pageNum, Integer pageSize, Integer year);

    /**
     * 设备日报数据统计
     *
     * @param deptId
     * @param date
     * @return
     */
    AppMachDataStatDTO dayReportStat(Integer deptId, Date date);

    /**
     * 设备月报数据统计
     *
     * @param deptId
     * @param month
     * @return
     */
    AppMachDataStatDTO monthReportStat(Integer deptId, Date month);

    /**
     * 设备多日报表数据统计
     *
     * @param deptId
     * @param startDate
     * @param endDate
     * @return
     */
    AppMachDataStatDTO reportStat(Integer deptId, Date startDate, Date endDate);

    /**
     * 设备年报数据统计
     *
     * @param deptId
     * @param year
     * @return
     */
    AppMachDataStatDTO yearReportStat(Integer deptId, Integer year);

    /**
     * 导出设备日报
     *
     * @param deptId
     * @param date
     * @return
     */
    OssPathDTO dayReportExport(Integer deptId, Date date);

    /**
     * 导出设备月报
     *
     * @param deptId
     * @param month
     * @return
     */
    OssPathDTO monthReportExport(Integer deptId, Date month);

    /**
     * 导出设备多天报表
     *
     * @param deptId
     * @param startDate
     * @param endDate
     * @return
     */
    OssPathDTO export(Integer deptId, Date startDate, Date endDate);

    /**
     * 导出设备年报
     *
     * @param deptId
     * @param year
     * @return
     */
    OssPathDTO yearReportExport(Integer deptId, Integer year);

    /************************导出普通设备报表***********************************/

    /**
     * 导出普通设备日报
     *
     * @param deptId
     * @param date
     * @return
     */
    OssPathDTO commonDayReportExport(Integer deptId, Date date);

    /**
     * 导出普通设备月报
     *
     * @param deptId
     * @param month
     * @return
     */
    OssPathDTO commonMonthReportExport(Integer deptId, Date month);

    /**
     * 导出普通设备多天报表
     *
     * @param deptId
     * @param startDate
     * @param endDate
     * @return
     */
    OssPathDTO commonExport(Integer deptId, Date startDate, Date endDate);
}
